package com.example.platine.activity;

import java.util.ArrayList;

import android.app.ListActivity;
import android.database.Cursor;
import android.media.MediaPlayer;
import android.media.RingtoneManager;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import com.example.platine.model.User;
import com.example.platine.other.RingtoneObject;
import com.example.platine.serveur.UserServeur;
import com.example.platine.thread.ThreadMusique;

/**
 * 
 * @author Victor Paumier / Claude Saint-Georges / Tung Nguyen
 * 
 * SonnerieActivity est l'activite qui permet 
 * le choix de la sonnerie
 */
public class SonnerieActivity extends ListActivity {

	private ArrayList<RingtoneObject> sonneries ;
	private String sonnerieURI = null ;
	private MediaPlayer md;
	private User user ;
	private ThreadMusique threadMusique ;

	@Override
	protected void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
		threadMusique = new ThreadMusique(getApplicationContext());

		//recuperer le user
		user = (User)this.getIntent().getExtras().getSerializable("USER") ;

		//recupere la liste des sonneries
		getSonneries();

		ArrayList<String> names = new ArrayList<String>() ;
		//ajoute le nom de la sonnerie a la liste 
		for(RingtoneObject ro : sonneries)
			names.add(ro.getName());
		setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice, names));
		getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE) ;
	}

	//quand click sur sonnerie
	@Override
	public void onListItemClick(ListView l, View v, final int position, long id) {
		//recupere l'adresse
		sonnerieURI = sonneries.get(position).getUri().toString() ;

		//arrete la lecture courante et lance la nouvelle
		threadMusique.arret();
		threadMusique.setUri(sonneries.get(position).getUri());
		threadMusique.start();
	}

	//recupere la liste des sonneries de type alarm
	private void getSonneries(){
		sonneries = new ArrayList<RingtoneObject>() ;

		RingtoneManager rm = new RingtoneManager(this) ;
		rm.setType(RingtoneManager.TYPE_ALARM);
		Cursor cursor = rm.getCursor() ;

		while (cursor.moveToNext()) {
			sonneries.add(new RingtoneObject(cursor.getString(RingtoneManager.TITLE_COLUMN_INDEX), rm.getRingtoneUri(cursor.getPosition())));
		}

		cursor.close();
	}

	//quand click sur bouton retour
	@Override
	public void onBackPressed(){
		//arrete la sonnerie
		threadMusique.arret();
		threadMusique.backPref();

		//modifie le user dans la base
		if(sonnerieURI != null){
			user.setSonnerie(sonnerieURI);
			new UserServeur().setCurrentUser(getApplicationContext(), user) ;
		}

		super.onBackPressed();
	}
}
